package com.gjintel.business.report.service;

import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;

import com.gjintel.business.proj.model.DepositReturn;
import com.gjintel.business.proj.model.ProjectInfo;
import com.gjintel.framework.register.model.DepositCategory;
import com.gjintel.sdk.base.dao.Page;
import com.gjintel.sdk.base.dao.Sort;
import com.gjintel.sdk.base.service.IBaseService;

public interface IReportService extends IBaseService {


	/**
  	 * @description 协议保证金统计
  	 * @author shy
  	 */
      public List<DepositCategory> list();
      
    /**
  	 * @description 获取保证金明细单
  	 * @author shy
  	 * @param projectId
  	 * @param projectName
  	 */
  	public List<DepositReturn> getDepositList(String projectName,String code,Page page,Integer depositType, String projectType);

  	 /**
  	 * @description 获取保证金明细单导出
  	 * @author shy
  	 * @param projectId
  	 * @param projectName
  	 */
  	public List<DepositReturn> getDepositListExport(String projectName,String code,Integer depositType, String projectType);

  	/**
  	 * 查询交易项目情况列表
  	 * @param project
  	 * @param page
  	 * @param sort
  	 * @param startTime
  	 * @param stopTime
  	 * @param startMoney
  	 * @param endMoney
  	 * @return
  	 */
  	public List<ProjectInfo> findReportByProjectCase(ProjectInfo project, Page page, Sort sort, Date startTime,
			Date stopTime,Double startMoney,Double endMoney);

  	/**
  	 * 按时间段查询保证金统计
  	 * @param name
  	 * @param startTime
  	 * @param stopTime
  	 * @return
  	 */
	public BigDecimal findDepositAmountByDate(Integer depositType,Integer status, Date startTime, Date stopTime,String className);

	/**
	 * 查询保证金集合
	 * @param className
	 * @param satus
	 * @return
	 */
	public List findDepositListByDate(Page page,Integer depositType, Integer satus, Date startTime, Date stopTime,String className);

	
	/**
	 * 查询项目列表(消息管理员，有开标时间的)
	 * @param project
	 * @param page
	 * @param sort
	 * @param startTime
	 * @param stopTime
	 */
	public List findReportByProjectList(ProjectInfo project, Page page, Sort sort, Date startTime, Date stopTime);
	
	/**
	 * 查询未开标项目列表(分配人管理员，有开标时间的)
	 * @param project
	 * @param page
	 * @param sort
	 * @param startTime
	 * @param stopTime
	 */
	public List findReportByNoOpentBidProjectList(ProjectInfo project, Page page, Sort sort, Date startTime, Date stopTime);

}
